// https://www.bilibili.com/video/BV1Vu4y1Y7P2/?spm_id_from=333.337.search-card.all.click&vd_source=716cc83db773dc676160781bc040d2f7
// never类型
type Method = 'GET' | 'POST' | 'PUT'
function request(method: Method) {
  switch (method) {
    case 'GET':
      return 'sdsdf'
    case 'POST':
      return '122'
    default: 
      const n: never = method // 我们新增了type Method PUT这个方法，但是没有实现对应的分支，进入了这个never，按道理来说，这里不可能进入，现在进入了，提示我们需要实现PUT分支逻辑，这个对大型的应用非常有用
      return n
  }
}

type BanType<T, E> = T extends E ? never : T // 限定了不可能是E类型的

function log<T>(x: BanType<T, string>) {
  console.log(x)
}
log(new Date())
log(1)
log('ssss')// 报错了